Automatic data processing systems have been proposed for use at the point-of-sale in retail business establishments, especially in supermarkets. Such a system is based upon the use of coded labels on each item of merchandise with a label reader at the check-out counter. The label reader, which includes an optical scanner, is interconnected with a central data processor and with an automatic cash register at the check-out counter. This system permits computer control of price information, inventory records and other functions useful in the business operation.
With a view toward such automatic data processing, a machine readable code symbol has been adopted by the Uniform Products Code Council for the Grocery Industry Universal Products Code (UPC). This UPC symbol is of bar code format and is adapted for reading by optical scanning apparatus.
When the UPC code symbol is read by an optical scanner, a video processor produces a stream of serial data which is in the form of a non-return-to-zero (NRZ) code having a wide dynamic range of bit width or bit time. The bit time in this code may vary from one code label to another and may also vary within a single code label, for reasons which will be discussed below. Accordingly, decoding cannot be performed without some means for determining whether a long time interval between transitions between the zero and one levels represents a single bit time at a relatively low data rate of plural bit times at a higher data rate. To successfully decode such a data signal it is necessary to provide some form of demarcation of the bit times regardless of variations in the data rate.
This invention is addressed to the problem of decoding an NRZ code with a variable data rate, i.e. a digital code wherein there is not necessarily a transition from one signal level to another for each data bit and wherein the bit time may vary over a wide dynamic range.